package demo3;
//Description:接口
interface IShape {//接口
    /*
    1.使用interface来修饰 2接口当中的方法不能有具体的实现 要实现一定得加default（默认）
    3 接口当中可以有static的方法4.里面所有的方法都是public的5.抽象方法默认是public abstract的
    6.接口是不可以被new来实例化的7.类和接口之间的关系是通过关键字implement来实现 的
    8当一个类实现了接口类就必须重写接口当中的抽象方法9接口当中的成员变量默认是public static final修饰的
    10当一个类实现一个接口之后重写这个方法的时候 方法前得加public
    11一个类可以通过extends来继承普通类或抽象类但只能继承一个类 同时也可以通过implements来实现多个接口接口之间用逗号隔开
    12接口和接口之间可以用extends来操作他们之间的关系 意为： 拓展 一个接口通过extends来拓展自己的功能
    此时当一个类实现 拓展后的接口 时 不仅仅是拓展前的抽象方法 还要写另一个接口的抽象方法
     */
    public abstract void draw();
    default  void func(){
        System.out.println(" 1");
    }
    public static  void funStatic(){

    }
}
class Rect implements IShape{//也就是实现类似于继承
    @Override
    public void draw() {
        System.out.println("rect");
    }

 //   @Override
//    public void func() {
//        System.out.println("默认方法的重写");
//    }
}
public class Test {
    public static void drawMap(IShape iShape){//动态绑定  接口也是可以的
        iShape.draw();
    }
    public static void main(String[] args) {
        IShape iShape = new Rect();
        iShape.draw();
        iShape.func();
        drawMap(iShape);
    }
}